package com.wenhao.leetcode.medium;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * 典型的滑动窗口的题目
 * 结合HashMap可以非常轻松地做出来
 * 注意很多时候滑动窗口可以结合map的size灵活地判断，特别是字符串的题目，这是一个可以优化的点
 *
 * @author Wenhao Tong
 * @create 2021-07-21 18:07
 */
public class LeetCode3 {
    public int lengthOfLongestSubstring(String s) {
        int lo = 0;
        int hi = 0;
        int max = 0;
        Map<Character,Integer> map = new HashMap<>();
        while (hi < s.length()) {
            if (map.containsKey(s.charAt(hi))) {
                map.remove(s.charAt(lo));
                lo++;
            } else {
                map.put(s.charAt(hi),hi);
                max = map.size() > max ? map.size() : max;
                hi++;
            }
        }
        return max;
    }
}
